/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sp2p.peerToPeer;

import java.io.File;
import java.io.IOException;
import java.io.Serializable;
import java.net.InetAddress;
import sp2p.peerToPeer.cliente.Cliente;
import sp2p.peerToPeer.servidor.Servidor;

/**
 *
 * @author anderson
 */
public class Peer implements Serializable, Runnable{

    Thread ladoServidor;
    Thread ladoCliente;
    private String nomePeer;
    private Servidor servidor;
    private Cliente cliente;

    public Peer() {
        servidor = new Servidor(this);
        cliente = new Cliente(this);
        ladoServidor = new Thread(getServidor());
        ladoCliente = new Thread(getCliente());
    }

    /**
     * Metodo responsavel por criar o diretorio onde ira ficar guardado os arquivos baixados
     * e os compartilados
     * @param enderecoDiretorio endereco do diretorio
     */
    public void criarDiretorioParaDownLoad(File enderecoDiretorio) {
        enderecoDiretorio.mkdir();
    }

    @Override
    public void run() {
        ladoServidor.start();//para start o servidor
        ladoCliente.start();//para registrar o cliente no RegistrationServer
    }

    public static void main(String[] args) throws IOException, InterruptedException {
        Peer p = new Peer();
        p.setNomePeer("peer01");
        p.servidor.setPorta(1234);
        Thread t = new Thread(p);
        t.start();
//        for (InetAddress in : InetAddress.getAllByName(InetAddress.getLocalHost().getHostName())) {
//            System.out.println(in.getLocalHost().getHostAddress());
//        }
//        List<File> listArquivos = new ArrayList<File>();
//        listArquivos.add(new File(Constantes.getDIRETORIO_COMPARTILHADO()+File.separator+"anderson1.txt"));
//        Compartilhador.getMapaPesquisas().put(p, listArquivos);
//
//        for (int i = 1; i <= 1; i++) {
//            Peer p1 = new Peer();
//            p1.setNomePeer("peerPesquisador" + i);
//            p1.getServidor().setPorta(1234 + i);
//            p1.getCliente().setPalavraChavePesquisa("anderson"+(i)+".txt");
//            System.out.println(p1.getCliente().getPalavraChavePesquisa());
//            p1.start();
//            Peer.sleep(1000 * 5);
//        }
//        FrameInicio f1 = new FrameInicio();
//        f1.getPeerDeInicio().getServidor().setPorta(1234);
//        f1.getPeerDeInicio().getServidor().setIp("127.0.0.1");
//        f1.setVisible(true);
//        FrameInicio f2 = new FrameInicio();
//        f2.getPeerDeInicio().getServidor().setPorta(1235);
//        f2.getPeerDeInicio().getServidor().setIp("127.0.1.1");
//        f2.setVisible(true);


    }

    /**
     * @return the nomePeer
     */
    public String getNomePeer() {
        return nomePeer;
    }

    /**
     * @param nomePeer the nomePeer to set
     */
    public void setNomePeer(String nomePeer) {
        this.nomePeer = nomePeer;
    }

    public Servidor getServidor() {
        return servidor;
    }

    public void setServidor(Servidor servidor) {
        this.servidor = servidor;
    }

    public Cliente getCliente() {
        return cliente;
    }

    public void setCliente(Cliente cliente) {
        this.cliente = cliente;
    }
}
